home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / Reference / DevCon / Washington_1988 / DevCon88.1 / JimmDemos / DemoSource / oscreen.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-27  |  3.6 KB  |  146 lines

  1. /* oscreen.c -- screen, window, menus, ... for overscan demo
  2.  * Copyright (c) 1988, I and I Computing and Commodore-Amiga, Inc.
  3.  *
  4.  *
  5.  * Executables based on this information may be used in software
  6.  * for Commodore Amiga computers.  All other rights reserved.
  7.  *
  8.  * This information is provided "as is"; no warranties are made.
  9.  * All use is at your own risk, and no liability or responsibility is assumed.
  10.  */
  11.  
  12. #include "sysall.h"
  13. #include "oscan.h"
  14.  
  15. #define NSWIDTH      HUGEWIDTH
  16. #define NSHEIGHT     HUGEHEIGHT
  17.  
  18. #define NSVIEWMODES    ( HIRES | LACE )
  19. #define NSTYPE        ( CUSTOMSCREEN | CUSTOMBITMAP )
  20.  
  21. struct Screen *
  22. getScreen( bmap )
  23. struct BitMap    *bmap;
  24. {
  25.     struct NewScreen    ns;
  26.  
  27.     ns.LeftEdge =    ns.TopEdge =    0;
  28.     ns.Width =    NSWIDTH; ns.Height =    NSHEIGHT;
  29.     ns.Depth =    bmap->Depth;
  30.     ns.DetailPen =    0;    ns.BlockPen =    1;
  31.     ns.ViewModes =    NSVIEWMODES;
  32.     ns.Type =        NSTYPE;
  33.     ns.Font =        NULL;
  34.     ns.DefaultTitle =    (UBYTE *) " Huge Test Screen ";
  35.     ns.Gadgets =     NULL;
  36.     ns.CustomBitMap = bmap;
  37.  
  38.     return ( OpenScreen( &ns ) );
  39. }
  40.  
  41. struct TextAttr myfont = { (UBYTE *) "topaz.font", 8, 0, 0};
  42. /* STRING GADGETS */
  43. #define SGTOP0    (80)
  44. #define SGTOP1    (100)
  45. #define SGLEFT    (250)
  46. #define SGWIDTH    (100)
  47. #define SGHEIGHT (10)
  48. #define GTLEFT    (-120)
  49. #define SGBUFF    (6)
  50. #define SGACTIV    (RELVERIFY | STRINGRIGHT | LONGINT)
  51.  
  52. UBYTE    oribuff0[ 100 ];
  53. UBYTE    oribuff1[ 100 ];
  54.  
  55. struct IntuiText oritext[] = {
  56.     {1, 0,JAM2,SGWIDTH + 20, 2, &myfont, oribuff0,NULL},
  57.     {1, 0,JAM2,SGWIDTH + 20,2, &myfont, oribuff1,NULL},
  58. };
  59.  
  60. struct IntuiText sgtext[] = {
  61.     {1, 0,JAM2,GTLEFT,2, &myfont,(UBYTE *) "View DxOffset:",&oritext[0]},
  62.     {1, 0,JAM2,GTLEFT,2, &myfont,(UBYTE *) "View DyOffset:",&oritext[1]},
  63. };
  64.  
  65. UBYTE    sgbuff0[ SGBUFF ];
  66. UBYTE    sgbuff1[ SGBUFF ];
  67.  
  68. UBYTE    unbuff0[ SGBUFF ];
  69. UBYTE    unbuff1[ SGBUFF ];
  70.  
  71. struct StringInfo mysi[] = {
  72.     {sgbuff0, unbuff0, 0, SGBUFF, 0},
  73.     {sgbuff1, unbuff1, 0, SGBUFF, 0},
  74. };
  75.  
  76. /* box around string gadgets    */
  77. SHORT    mypoints[] = {
  78.     -1,-2,
  79.     SGWIDTH,-2,
  80.     SGWIDTH,SGHEIGHT,
  81.     -1,SGHEIGHT,
  82.     -1,-2,
  83. };
  84. struct Border mysgborder = { 0,0,1,0,JAM2,5,mypoints,NULL};
  85.  
  86. struct Gadget    mysg[] = {
  87.     { &mysg[1], SGLEFT, SGTOP0, SGWIDTH, SGHEIGHT, GADGHCOMP, SGACTIV, STRGADGET,
  88.         (APTR) &mysgborder, NULL, &sgtext[0], 0, (APTR) &mysi[0], 0},
  89.     {   NULL, SGLEFT, SGTOP1, SGWIDTH, SGHEIGHT, GADGHCOMP, SGACTIV, STRGADGET,
  90.         (APTR) &mysgborder, NULL, &sgtext[1], 0, (APTR) &mysi[1], 0},
  91. };
  92.  
  93. /* MENUS */
  94. #define MFLAGS  (ITEMTEXT | ITEMENABLED | HIGHCOMP)
  95. #define    MIHT    (10)    /* menu item height */
  96.  
  97. /* menu item text    */
  98. struct IntuiText mitext[] = {
  99.     {0,1,JAM2,2,0, &myfont,(UBYTE *) "View Shift",NULL},
  100.     {0,1,JAM2,2,0, &myfont,(UBYTE *) "Cheat, too",NULL},
  101.     {0,1,JAM2,2,0, &myfont,(UBYTE *) "Normal",NULL},
  102.     {0,1,JAM2,2,0, &myfont,(UBYTE *) "Quit",NULL},
  103. };
  104.  
  105. struct MenuItem myi[] = {
  106. {&myi[1], 2,     0,        100, MIHT, MFLAGS, 0, (APTR) &mitext[0],NULL, 0, NULL},
  107. {&myi[2], 2,     MIHT,    100, MIHT, MFLAGS, 0, (APTR) &mitext[1],NULL, 0, NULL},
  108. {&myi[3], 2,   2*MIHT,    100, MIHT, MFLAGS, 0, (APTR) &mitext[2],NULL, 0, NULL},
  109. { NULL,   2,   3*MIHT,    100, MIHT, MFLAGS, 0, (APTR) &mitext[3],NULL, 0, NULL},
  110. };
  111.  
  112. struct Menu    mymenu[] = {
  113.     { NULL, 0, 0, 100, 10, MENUENABLED, " Action ", myi},
  114. };
  115.  
  116. struct Window    *
  117. getWindow( screen )
  118. struct Screen *screen;
  119. {
  120.     struct NewWindow    nw;
  121.     struct Window        *window;
  122.     extern ULONG     iflags;
  123.     extern ULONG     flags;
  124.  
  125.     nw.LeftEdge =    0;
  126.     nw.TopEdge =    screen->BarHeight;
  127.     nw.Width =        screen->Width;
  128.     nw.Height =        screen->Height - nw.TopEdge;
  129.     nw.DetailPen    = 0;    nw.BlockPen =    1;
  130.     nw.IDCMPFlags =    iflags;
  131.     nw.Flags =         flags;
  132.     nw.FirstGadget = mysg;
  133.     nw.CheckMark =    NULL;
  134.     nw.Title =         NULL;
  135.     nw.Screen =        screen;
  136.     nw.BitMap =     NULL;
  137.     nw.Type =        CUSTOMSCREEN;
  138.  
  139.     if ( window = OpenWindow( &nw ) )
  140.     {
  141.         SetMenuStrip( window, mymenu );
  142.     }
  143.  
  144.     return ( window );
  145. }
  146.